提供一种顺序访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。
- Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator;
- Iterator 主要定义了 hasNext() 和 next() 方法;
- Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。
publicinterfaceAggregate { IteratorcreateIterator(); }
publicclassConcreteAggregateimplementsAggregate { privateInteger[] items; publicConcreteAggregate() { items = newInteger[10]; for (inti = 0; i < items.length; i++) { items[i] = i; } } @OverridepublicIteratorcreateIterator() { returnnewConcreteIterator<Integer>(items); } }
publicinterfaceIterator<Item> { Itemnext(); booleanhasNext(); }
publicclassConcreteIterator<Item> implementsIterator { privateItem[] items; privateintposition = 0; publicConcreteIterator(Item[] items) { this.items = items; } @OverridepublicObjectnext() { returnitems[position++]; } @OverridepublicbooleanhasNext() { returnposition < items.length; } }
publicclassClient { publicstaticvoidmain(String[] args) { Aggregateaggregate = newConcreteAggregate(); Iterator<Integer> iterator = aggregate.createIterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }